home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / qex / dishfd1 / dishfd1.bas < prev    next >
BASIC Source File  |  1996-01-05  |  4KB  |  111 lines

  1. REM  DISHFD2.BAS  ver 1.0
  2. REM
  3. REM  QBasic program to calculate the efficiency of a parabola as a
  4. REM  function of the feed amplitude characteristics and the f/d of
  5. REM  the dish.          Bob Larkin, W7PUA     20 Dec 95
  6.  
  7. DIM FEED#(20), IFEED#(180), ETC#(17), ETAS#(17), ETAI#(17), C#(4, 5)
  8. DIM IN1#(180), IN2#(180)
  9. PI# = 3.14159265359#
  10.  
  11. REM Files should have 19 entries on separate lines.  The values should be
  12. REM in dB attenuation relative to the peak gain of the feed.  Thus, there
  13. REM should be a 0.0 entry somewhere and no entries should be negative.
  14.  
  15. INPUT "Input file name, including path and extension, for feed data"; NAMEF$
  16. OPEN NAMEF$ FOR INPUT AS #1
  17. FOR I% = 1 TO 19
  18.    INPUT #1, FEED#(I%)
  19.    FEED#(I%) = 10# ^ (-FEED#(I%) / 20#)    'Convert to Voltage magnitude
  20. NEXT I%
  21. FEED#(0) = FEED#(2)    'Provides symmetry at the axis for interpolation
  22. FEED#(20) = FEED#(18)  'This does it at 180 degrees as well
  23.  
  24. REM Next interpolate 18 times by fitting a cubic through adjacent 4 points
  25. REM and interpolating the polynomial at each degree.
  26. FOR I% = 1 TO 18   'Over all 10 degree sectors
  27.     REM For numerical accuracy, we will always consider angle as (-10, 20)
  28.     FOR J% = 1 TO 4   'Over 4 data points, set up equations
  29.         C#(J%, 1) = 1
  30.         FOR K% = 2 TO 4  '3 coefficients per equation
  31.             C#(J%, K%) = (10# * (J% - 2)) ^ (K% - 1)
  32.         NEXT K%
  33.         C#(J%, 5) = FEED#(I% + J% - 2)
  34.     NEXT J%
  35.  
  36.     REM Now solve 4 equations for 4 coefficients
  37.     FOR J% = 1 TO 4
  38.         FOR L% = J% TO 4
  39.             IF ABS(C#(L%, J%)) > 1E-10 THEN GOTO NONZ
  40.         NEXT L%
  41. NONZ:   FOR K% = 1 TO 5
  42.             CT# = C#(J%, K%)
  43.             C#(J%, K%) = C#(L%, K%)
  44.             C#(L%, K%) = CT#
  45.         NEXT K%
  46.         CT# = 1# / C#(J%, J%)
  47.         FOR K% = 1 TO 5
  48.             C#(J%, K%) = CT# * C#(J%, K%)
  49.         NEXT K%
  50.         FOR L% = 1 TO 4
  51.             IF L% = J% THEN GOTO LUP
  52.             CT# = -C#(L%, J%)
  53.             FOR K% = 1 TO 5
  54.                 C#(L%, K%) = C#(L%, K%) + CT# * C#(J%, K%)
  55.             NEXT K%
  56. LUP:    NEXT L%
  57.     NEXT J%
  58.     REM  Now interpolate to each degree point
  59.     FOR J% = 0 TO 10
  60.         AJ# = J%    'Evaluate the polynomial
  61.         V# = C#(1, 5) + C#(2, 5) * AJ# + C#(3, 5) * AJ# ^ 2
  62.         V# = V# + C#(4, 5) * AJ# ^ 3
  63.         IFEED#(10 * (I% - 1) + J%) = V#   'Save in deg by deg vector
  64.     NEXT J%
  65. NEXT I%
  66.  
  67. DOINT:
  68. REM  Now integrate the interpolated curves to find the antenna efficiencies
  69. REM  Collect integrands, U*tan(theta/2) and U^2 * sin(theta) in IN1(), IN2().
  70. REM  Note that integration period 1 is 0 to 1 degrees, centered on 0.5 deg.
  71. DENOM# = 0#
  72. FOR I% = 1 TO 180
  73.     U# = .5 * (IFEED#(I% - 1) + IFEED#(I%))
  74.     THETA# = PI# * (I% - .5) / 180#
  75.     HTHETA# = .5 * THETA#
  76.     IN1#(I%) = U# * TAN(HTHETA#)
  77.     IN2#(I%) = U# * U# * SIN(THETA#)
  78.     DENOM# = DENOM# + IN2#(I%)
  79. NEXT I%
  80. DENOM# = PI# * DENOM# / 180#   'Scale to be an area
  81. PRINT
  82. PRINT "I. eff = Illumination efficiency, S. eff = Spillover efficiency"
  83. FOR TH1% = 5 TO 90 STEP 5
  84.     NUM# = 0#
  85.     FOR I% = 1 TO TH1%          'TH% is half angle subtended by dish
  86.         NUM# = NUM# + IN1#(I%)
  87.     NEXT I%
  88.     NUM# = PI# * NUM# / 180#
  89.     DENI# = 0#
  90.     FOR I% = 1 TO TH1%
  91.         DENI# = DENI# + IN2#(I%)
  92.     NEXT I%
  93.     DENI# = PI# * DENI# / 180#
  94.     K# = 2# / ((TAN(PI# * TH1% / 360#)) ^ 2)
  95.     FOD# = 1# / (4 * TAN(PI# * TH1% / 360#))
  96.     ETA# = K# * NUM# * NUM# / DENOM#
  97.     EI# = K# * NUM# * NUM# / DENI#
  98.     ES# = ETA# / EI#
  99.     PRINT USING "Half Angle=## deg, F/D=#.### "; TH1%; FOD#;
  100.     PRINT USING "Feed=###.##dB  "; 8.68589 * LOG(IFEED#(TH1%));
  101.     PRINT USING "Eff=#.### I. eff=#.### S. eff=#.###"; ETA#; EI#; ES#
  102. NEXT TH1%
  103. INPUT "Enter to continue"; ZZ$
  104. STOP
  105.  
  106.  
  107.  
  108.         
  109.  
  110.  
  111.